// var zhangsan = {
//     name: 'zhangsan',
//     age: 21,
//     sayHi: function () {
//         console.log('hello')
//     }
// }

// var lisi = new Object();
// lisi.name = 'lisi'
// lisi.age = 23

// //工厂模式
// function createPerson(name, age){
//     var obj = {}
//     obj.name = name
//     obj.age = age
//     return obj
// }

// var ming = createPerson('ming', 21)

// //构造函数
// function Person(name, age){
//     this.name = name;
//     this.age = age;
// }
// var wang = new Person('王', 18)
// var zhaoliu = new Person('zhaoliu', 18)  

// function Polygon(side) {
//     this.side = side
//     this.getArea = function () {
//         console.log("面积是：", this.side*this.side);        
//     }
// }
// var square = new Polygon(2)
// square.getArea()

// // 对象冒充
// function Rectangle(width , height){
//     this.temp = Polygon;
//     this.temp(4);
//     delete this.temp;
//     //以上三行代码的分析

//     this.width = width;
//     this.height = height;
// }

// var r1 = new Rectangle(4, 3)
// var r2 = new Rectangle(6, 4)


// //原型链继承
// // function Crowd() {
// //     this.needs = ["吃饭", "睡觉"];
// // }

// // function People(){}
// // People.prototype = new Crowd();

// // var people1 = new People();
// // people1.needs.push("玩游戏");

// // var people2 = new People();

// function Triangle(len1,len2,len3){
//     this.len1 = len1
//     this.len2 = len2
//     this.len3 = len3
//     this.isEqual = function () {
//         console.log('true');
//     }
// }
// Triangle.prototype = new Polygon(4)


// function Crowd() {
//     this.needs = ["吃饭", "睡觉"];
// }
// Crowd.prototype.show = function() {
//   console.log('我是父类')
// }

// function People(){
//     //对象冒充
//     Crowd.call(this)
// }
// //原型链继承
// People.prototype = new Crowd();

// var people1 = new People();
// people1.needs.push("玩游戏");
// // console.log(people1.needs)

// var people2 = new People();
// console.log(people2.needs)
// // people2.show()


// //"JavaScript中无块级作用域"
// var name = 'aiit'
// if(true){
//     let name = 'web';
// }
// // console.log(name);

// // JavaScript采用函数作用域
// function Main(){
//     var innerValue = 'web';
// }

// Main();

// // console.log(innerValue);

// // JavaScript的作用域链
// xo = 'alex';
 
// function Func(){
//     // var xo = "seven";
//     function inner(){
//         // var xo = 'alvin'; 
//         console.log(xo);
//     }
//     inner();
// }
// Func();

// // 函数闭包
// function princess() {
//     var adventures = [];
  
//     function princeCharming() { /* ... */ } //白马王子

//     var unicorn = { /* ... */ },          //独角兽
//         dragons = [ /* ... */ ],         //龙
//         squirrel = "Hello!";            //松鼠

//     adventures.push(unicorn, dragons, squirrel);
//     return {
//         story: function() {
//             return adventures[adventures.length - 1];
//         }
//     };
// }

// var littleGirl = princess();
// littleGirl.story();

// // 变量提升
// var foo = 1;
// function bar() {

//     if (!foo) {
//         var foo = 10;
//     }
//     // alert(foo);
// }
// bar();

// // 理解函数
// var a = 1;
// function b() {
//     a = 10;
//     return;
//     function a() {}
// }
// b();
// alert(a);

// function test1() {
//     foo(); // TypeError "foo is not a function"
//     bar(); // "this will run!"
//     var foo = function () { // function expression assigned to local variable 'foo'
//         alert("this won't run!");
//     }
//     function bar() { // function declaration, given the name 'bar'
//         alert("this will run!");
//     }
// }
// test1();

var name="XL";
var person={
    name:"xl",
    showName:function(){
        console.log(this.name);
    }
}

function  Person(name){
    this.name=name;
}

var personA = Person("xl");